package mysql8学习.高级.第07章_InnoDB数据存储结构存储;

/**
 * Redundant 行格式
 * Redundant是MySQL 5. 0版本之前InnoDB的行记录存储方式，
 * MySQL 5.0支持 Redundant是为了兼容之前版本的页格式。
 * 记录的额外信息
 *     字段长度偏移量
 *        注意Compact行格式的开头是变长字段长度列表，
 *        而Redundant行 格式的开头是字段长度偏移列表，与变长字段长度列表有两处不同:
 *        ● 少了“变长”两个字: Redundant行格式会把该条记录中所有列(包括隐藏列)的
 *          长度信息都按照逆序存储到字段长度偏移列表。
 *        ● 多了“偏移”两个字:这意味着计算列值长度的方式不像Compact行格式那么直观
 *          它是采用两个相邻数值的差值米计算各个列值的长度。
 *     记录头信息
 * 不同于Compact行格式，Redundant行格式中的记录头信息固定占用6个字节(48位)
 * ，每位的含义见下表。
 * 名称             大小(bit)     描述
 * ()                   1       未使用
 * ()                   1       未使用
 * deleted_mask         1       该行是否已被删除
 * min_rec_mask         1       B+树的每层非叶子节点中的最小记录部会添加该标记
 * n_owned              4       该记录拥有的记录数
 * heap_no             13        索引堆中该条记录的位置信息
 * n_fields            10       记录中列的数量
 * 1byte_offs_flag     1      记录字段长度偏移列表中每个列对应的偏移量<br>
 *                              使用1个字节还是2个字节表示
 * next record         16        页中下一条记录的绝对位置
 * ●与Compact行格式的记录头信息对比来看，有两处不同:
 *      ●Redundant 行格式多了 n_field 和 1byte_off_flag这两个属性。
 *      ●Redundant 行格式没有 record_type这个属性。
 * 其中，n_ fields: 代表一行中列的数量，占用10位，
 * 这也很好地解释了为什么MySQL一个行支持最多的列为1023。
 * 另一个值为 1byte_offs_flags， 该值定义了偏移列表占用1个字节还是2个字节。
 * 当它的值为1时，表明使用1个字节存储。当它的值为0时，表明使用2个字节存储。
 * 1byte_offs_flag的值 是怎么选择的
 * 我们前边说过每个列对应的偏移量可以占用1个字节或者2个字节来存储，
 * 那到底什么时候用1个字节，什么时候用2个字节呢?
 * 其实是根据该条Redundant行格式记录的真实数据占用的总大小来判断的:
 *
 *
 */
public class D3_Redundant行格式 {
}
